Businesses are growing increasingly dependent on distributed computing environments and wide area computer networks to accomplish critical tasks. Indeed, a wide variety of business applications are deployed across intranet, extranet and Internet connections to effect essential communications with workers, business partners and customers. As the number of users, applications and external traffic increases, however, network congestion forms, impairing business application performance. Enterprise network managers, therefore, are constantly challenged with determining the volume, origin and nature of network traffic to align network resources with business priorities and applications.
Data compression, caching and other technologies that optimize or reduce the size of network traffic flows can be deployed to improve the efficiency and performance of a computer network and ease congestion at bottleneck links. For example, implementing data compression and/or caching technology can improve network performance by reducing the amount of bandwidth required to transmit a given block of data between two network devices along a communications path. Data compression technologies can be implemented on routing nodes without alteration of client or server end systems, or software applications executed therein, to reduce bandwidth requirements along particularly congested portions of a communications path. For example, tunnel technologies, like those used in Virtual Private Network (VPN) implementations, establish tunnels through which network traffic is transformed upon entering at a first network device in a communications path and restored to substantially the same state upon leaving a second network device.
A variety of compression algorithms and technologies have been developed, such as the run-length encoding (“RLE”), Huffman encoding, Lempel-ziv compression (e.g., LZ77, LZ78, etc.), Lempel-Ziv-Welch (“LZW”) compression, fixed library compression, and combinations/variants of the foregoing compression methods. All compression methods have their own advantages and tradeoffs. It is generally understood that no single compression method is superior for all applications and data types. The most beneficial choice of compression tools and libraries for a particular network application depends on the characteristics of the data and application in question: streaming versus file; expected patterns and regularities in the data; relative importance of CPU usage, memory usage, channel demands and storage requirements; and other factors.
Optimal compression typically is achieved by using algorithms which require delivery of compressed data in the correct order and without corruption. This requires a “reliable” transport protocol. However, under some circumstances, such as high-loss networks, the ability of a reliable transport to deliver packets in a timely manner can be compromised, leading to stalls in data delivery. This can cause problems for some application protocols, particularly those for whom reliability was not desirable or necessary in the first place (e.g. UDP-based protocols). When these aforementioned situations occur, the established tunnel between two network devices will typically be bypassed and data is no longer compressed. As a result, the benefits of compression are no longer available.
In view of the foregoing, it may be beneficial to provide methods, apparatuses and systems that maintains compression of data under adverse network conditions, such as lossy network and other conditions.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings.